package com.boilermaker.springIoC;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class NewsListener2 {

    @Autowired
    private NewsInformation newsInformation;


    public NewsListener2(NewsInformation newsInformation) {
        this.newsInformation = newsInformation;
    }

    // 同一个类可以生成多个对象，指向不同的数据源，此时需要方法注解
    // 重命名。默认的bean名称为方法名。
    @Bean
    public int getStatus() {
        return -1;
    }

    @Bean
    public int getStatus2() {
        return 0;
    }

    // IoC容器的一项重要职责是管理对象间的依赖关系
    // 如果该方法需要参数，也就是依赖其他对象，那么Spring就需要在容器中找到这个对象
    // @Qualifier 可以加在参数上，用于指定需要使用哪个bean
    @Bean({"n1", "newsListener1"})
    public NewsListener2 newsListener1(@Qualifier("getStatus2") int status) {
        return new NewsListener2(newsInformation);
    }

    @Bean("n2")
    public NewsListener2 newsListener2(@Qualifier("getStatus2")int status) {
        return new NewsListener2(newsInformation);
    }
}
